home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / Appearance SDK 1.0.4 / Appearance Sample Code / Headers / RIncludes / Controls.r < prev    next >
Encoding:
Text File  |  1999-07-16  |  18.0 KB  |  453 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Controls.r
  3.  
  4.      Contains:    Control Manager interfaces
  5.  
  6.      Version:    Technology:    Appearance 1.0.2
  7.                  Release:    To be used with Unversal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18.  
  19. #ifndef __CONTROLS_R__
  20. #define __CONTROLS_R__
  21.  
  22. #ifndef __CONDITIONALMACROS_R__
  23. #include "ConditionalMacros.r"
  24. #endif
  25.  
  26. #define kControlSupportsNewMessages     ' ok '                /*  CDEF should return as result of kControlMsgTestNewMsgSupport */
  27. #define kControlFocusNoPart             0                    /*  tells control to clear its focus */
  28. #define kControlFocusNextPart             (-1)                /*  tells control to focus on the next part */
  29. #define kControlFocusPrevPart             (-2)                /*  tells control to focus on the previous part */
  30.  
  31. #define kControlKeyFilterBlockKey         0
  32. #define kControlKeyFilterPassKey         1
  33.  
  34.                                                             /*  Meta-font numbering - see not above  */
  35. #define kControlFontBigSystemFont         (-1)                /*  force to big system font */
  36. #define kControlFontSmallSystemFont     (-2)                /*  force to small system font */
  37. #define kControlFontSmallBoldSystemFont  (-3)                /*  force to small bold system font */
  38.  
  39. #define kControlUseFontMask             0x0001
  40. #define kControlUseFaceMask             0x0002
  41. #define kControlUseSizeMask             0x0004
  42. #define kControlUseForeColorMask         0x0008
  43. #define kControlUseBackColorMask         0x0010
  44. #define kControlUseModeMask             0x0020
  45. #define kControlUseJustMask             0x0040
  46. #define kControlUseAllMask                 0x00FF
  47. #define kControlAddFontSizeMask         0x0100
  48.  
  49. #define kControlFontStyleTag             'font'
  50. #define kControlKeyFilterTag             'fltr'
  51.  
  52.                                                             /*  Control feature bits - returned by GetControlFeatures  */
  53. #define kControlSupportsGhosting         0x01
  54. #define kControlSupportsEmbedding         0x02
  55. #define kControlSupportsFocus             0x04
  56. #define kControlWantsIdle                 0x08
  57. #define kControlWantsActivate             0x10
  58. #define kControlHandlesTracking         0x20
  59. #define kControlSupportsDataAccess         0x40
  60. #define kControlHasSpecialBackground     0x80
  61. #define kControlGetsFocusOnClick         0x0100
  62. #define kControlSupportsCalcBestRect     0x0200
  63. #define kControlSupportsLiveFeedback     0x0400
  64.  
  65. #define kControlHasRadioBehavior         0x0800
  66.                                                             /*  Control Messages  */
  67. #define kControlMsgDrawGhost             13
  68. #define kControlMsgCalcBestRect         14                    /*  Calculate best fitting rectangle for control */
  69. #define kControlMsgHandleTracking         15
  70. #define kControlMsgFocus                 16                    /*  param indicates action. */
  71. #define kControlMsgKeyDown                 17
  72. #define kControlMsgIdle                 18
  73. #define kControlMsgGetFeatures             19
  74. #define kControlMsgSetData                 20
  75. #define kControlMsgGetData                 21
  76. #define kControlMsgActivate             22
  77. #define kControlMsgSetUpBackground         23
  78. #define kControlMsgCalcValueFromPos     26
  79. #define kControlMsgTestNewMsgSupport     27                    /*  See if this control supports new messaging */
  80.  
  81. #define kControlMsgSubValueChanged         25
  82. #define kControlMsgSubControlAdded         28
  83. #define kControlMsgSubControlRemoved     29
  84.  
  85.                                                             /*  Bevel Button Proc IDs  */
  86. #define kControlBevelButtonSmallBevelProc  32
  87. #define kControlBevelButtonNormalBevelProc  33
  88. #define kControlBevelButtonLargeBevelProc  34
  89.  
  90.                                                             /*  Bevel button graphic alignment values  */
  91. #define kControlBevelButtonAlignSysDirection  (-1)            /*  only left or right */
  92. #define kControlBevelButtonAlignCenter     0
  93. #define kControlBevelButtonAlignLeft     1
  94. #define kControlBevelButtonAlignRight     2
  95. #define kControlBevelButtonAlignTop     3
  96. #define kControlBevelButtonAlignBottom     4
  97. #define kControlBevelButtonAlignTopLeft  5
  98. #define kControlBevelButtonAlignBottomLeft  6
  99. #define kControlBevelButtonAlignTopRight  7
  100. #define kControlBevelButtonAlignBottomRight  8
  101.  
  102.                                                             /*  Bevel button text alignment values  */
  103. #define kControlBevelButtonAlignTextSysDirection  0
  104. #define kControlBevelButtonAlignTextCenter  1
  105. #define kControlBevelButtonAlignTextFlushRight  (-1)
  106. #define kControlBevelButtonAlignTextFlushLeft  (-2)
  107.  
  108.                                                             /*  Bevel button text placement values  */
  109. #define kControlBevelButtonPlaceSysDirection  (-1)            /*  if graphic on right, then on left */
  110. #define kControlBevelButtonPlaceNormally  0
  111. #define kControlBevelButtonPlaceToRightOfGraphic  1
  112. #define kControlBevelButtonPlaceToLeftOfGraphic  2
  113. #define kControlBevelButtonPlaceBelowGraphic  3
  114. #define kControlBevelButtonPlaceAboveGraphic  4
  115.  
  116. #define kControlBevelButtonSmallBevelVariant  0
  117. #define kControlBevelButtonNormalBevelVariant  0x01
  118. #define kControlBevelButtonLargeBevelVariant  0x02
  119. #define kControlBevelButtonMenuOnRight     0x04
  120.  
  121. #define kControlBehaviorPushbutton         0
  122. #define kControlBehaviorToggles         0x0100
  123. #define kControlBehaviorSticky             0x0200
  124. #define kControlBehaviorMultiValueMenu     0x4000                /*  only makes sense when a menu is attached. */
  125. #define kControlBehaviorOffsetContents     0x8000
  126.  
  127. #define kControlBehaviorCommandMenu     0x2000                /*  menu holds commands, not choices. Overrides multi-value bit. */
  128. #define kControlContentTextOnly         0
  129. #define kControlContentIconSuiteRes     1
  130. #define kControlContentCIconRes         2
  131. #define kControlContentPictRes             3
  132. #define kControlContentIconSuiteHandle     129
  133. #define kControlContentCIconHandle         130
  134. #define kControlContentPictHandle         131
  135. #define kControlContentIconRef             132
  136.  
  137. #define kControlBevelButtonContentTag     'cont'                /*  ButtonContentInfo */
  138. #define kControlBevelButtonTransformTag  'tran'                /*  IconTransformType */
  139. #define kControlBevelButtonTextAlignTag  'tali'                /*  ButtonTextAlignment */
  140. #define kControlBevelButtonTextOffsetTag  'toff'            /*  SInt16 */
  141. #define kControlBevelButtonGraphicAlignTag  'gali'            /*  ButtonGraphicAlignment */
  142. #define kControlBevelButtonGraphicOffsetTag  'goff'            /*  Point */
  143. #define kControlBevelButtonTextPlaceTag  'tplc'                /*  ButtonTextPlacement */
  144. #define kControlBevelButtonMenuValueTag  'mval'                /*  SInt16 */
  145. #define kControlBevelButtonMenuHandleTag  'mhnd'            /*  MenuHandle */
  146. #define kControlBevelButtonCenterPopupGlyphTag  'pglc'        /*  Boolean: true = center, false = bottom right */
  147.  
  148. #define kControlBevelButtonLastMenuTag     'lmnu'                /*  SInt16: menuID of last menu item selected from */
  149. #define kControlBevelButtonMenuDelayTag  'mdly'                /*  SInt32: ticks to delay before menu appears */
  150.  
  151.                                                             /*  Slider proc IDs  */
  152. #define kControlSliderProc                 48
  153. #define kControlSliderLiveFeedback         0x01
  154. #define kControlSliderHasTickMarks         0x02
  155. #define kControlSliderReverseDirection     0x04
  156. #define kControlSliderNonDirectional     0x08
  157.  
  158.                                                             /*  Triangle proc IDs  */
  159. #define kControlTriangleProc             64
  160. #define kControlTriangleLeftFacingProc     65
  161. #define kControlTriangleAutoToggleProc     66
  162. #define kControlTriangleLeftFacingAutoToggleProc  67
  163.  
  164.                                                             /*  Tagged data supported by disclosure triangles  */
  165. #define kControlTriangleLastValueTag     'last'                /*  SInt16 */
  166.                                                             /*  Progress Bar proc IDs  */
  167. #define kControlProgressBarProc         80
  168.                                                             /*  Tagged data supported by progress bars  */
  169. #define kControlProgressBarIndeterminateTag  'inde'            /*  Boolean */
  170.                                                             /*  Little Arrows proc IDs  */
  171. #define kControlLittleArrowsProc         96
  172.                                                             /*  Chasing Arrows proc IDs  */
  173. #define kControlChasingArrowsProc         112
  174.                                                             /*  Tabs proc IDs  */
  175. #define kControlTabLargeProc             128                    /*  Large tab size, north facing     */
  176. #define kControlTabSmallProc             129                    /*  Small tab size, north facing     */
  177. #define kControlTabLargeNorthProc         128                    /*  Large tab size, north facing     */
  178. #define kControlTabSmallNorthProc         129                    /*  Small tab size, north facing     */
  179. #define kControlTabLargeSouthProc         130                    /*  Large tab size, south facing     */
  180. #define kControlTabSmallSouthProc         131                    /*  Small tab size, south facing     */
  181. #define kControlTabLargeEastProc         132                    /*  Large tab size, east facing     */
  182. #define kControlTabSmallEastProc         133                    /*  Small tab size, east facing     */
  183. #define kControlTabLargeWestProc         134                    /*  Large tab size, west facing     */
  184. #define kControlTabSmallWestProc         135                    /*  Small tab size, west facing     */
  185.  
  186.                                                             /*  Tagged data supported by progress bars  */
  187. #define kControlTabContentRectTag         'rect'                /*  Rect */
  188. #define kControlTabEnabledFlagTag         'enab'                /*  Boolean */
  189. #define kControlTabFontStyleTag         'font'                /*  ControlFontStyleRec */
  190.  
  191. #define kControlTabInfoTag                 'tabi'                /*  ControlTabInfoRec */
  192. #define kControlTabInfoVersionZero         0
  193.                                                             /*  Visual separator proc IDs  */
  194. #define kControlSeparatorLineProc         144
  195.                                                             /*  Group Box proc IDs  */
  196. #define kControlGroupBoxTextTitleProc     160
  197. #define kControlGroupBoxCheckBoxProc     161
  198. #define kControlGroupBoxPopupButtonProc  162
  199. #define kControlGroupBoxSecondaryTextTitleProc  164
  200. #define kControlGroupBoxSecondaryCheckBoxProc  165
  201. #define kControlGroupBoxSecondaryPopupButtonProc  166
  202.  
  203.                                                             /*  Tagged data supported by group box  */
  204. #define kControlGroupBoxMenuHandleTag     'mhan'                /*  MenuHandle (popup title only) */
  205. #define kControlGroupBoxFontStyleTag     'font'                /*  ControlFontStyleRec */
  206.  
  207.                                                             /*  Image Well proc IDs  */
  208. #define kControlImageWellProc             176
  209.                                                             /*  Tagged data supported by image wells  */
  210. #define kControlImageWellContentTag     'cont'                /*  ButtonContentInfo */
  211. #define kControlImageWellTransformTag     'tran'                /*  IconTransformType */
  212.  
  213.                                                             /*  Popup Arrow proc IDs  */
  214. #define kControlPopupArrowEastProc         192
  215. #define kControlPopupArrowWestProc         193
  216. #define kControlPopupArrowNorthProc     194
  217. #define kControlPopupArrowSouthProc     195
  218. #define kControlPopupArrowSmallEastProc  196
  219. #define kControlPopupArrowSmallWestProc  197
  220. #define kControlPopupArrowSmallNorthProc  198
  221. #define kControlPopupArrowSmallSouthProc  199
  222.  
  223.                                                             /*  Placard proc IDs  */
  224. #define kControlPlacardProc             224
  225.                                                             /*  Clock proc IDs  */
  226. #define kControlClockTimeProc             240
  227. #define kControlClockTimeSecondsProc     241
  228. #define kControlClockDateProc             242
  229. #define kControlClockMonthYearProc         243
  230.  
  231. #define kControlClockNoFlags             0
  232. #define kControlClockIsDisplayOnly         1
  233. #define kControlClockIsLive             2
  234.  
  235.                                                             /*  Tagged data supported by clocks  */
  236. #define kControlClockLongDateTag         'date'                /*  LongDateRec */
  237. #define kControlClockFontStyleTag         'font'                /*  ControlFontStyleRec */
  238.  
  239.                                                             /*  User Pane proc IDs  */
  240. #define kControlUserPaneProc             256
  241. #define kControlUserItemDrawProcTag     'uidp'                /*  UserItemUPP */
  242. #define kControlUserPaneDrawProcTag     'draw'                /*  ControlUserPaneDrawingUPP */
  243. #define kControlUserPaneHitTestProcTag     'hitt'                /*  ControlUserPaneHitTestUPP */
  244. #define kControlUserPaneTrackingProcTag  'trak'                /*  ControlUserPaneTrackingUPP */
  245. #define kControlUserPaneIdleProcTag     'idle'                /*  ControlUserPaneIdleUPP */
  246. #define kControlUserPaneKeyDownProcTag     'keyd'                /*  ControlUserPaneKeyDownUPP */
  247. #define kControlUserPaneActivateProcTag  'acti'                /*  ControlUserPaneActivateUPP */
  248. #define kControlUserPaneFocusProcTag     'foci'                /*  ControlUserPaneFocusUPP */
  249. #define kControlUserPaneBackgroundProcTag  'back'            /*  ControlUserPaneBackgroundUPP */
  250.  
  251.                                                             /*  Edit Text proc IDs  */
  252. #define kControlEditTextProc             272
  253. #define kControlEditTextDialogProc         273
  254. #define kControlEditTextPasswordProc     274
  255.  
  256.                                                             /*  Tagged data supported by edit text  */
  257. #define kControlEditTextStyleTag         'font'                /*  ControlFontStyleRec */
  258. #define kControlEditTextTextTag         'text'                /*  Buffer of chars - you supply the buffer */
  259. #define kControlEditTextTEHandleTag     'than'                /*  The TEHandle of the text edit record */
  260. #define kControlEditTextKeyFilterTag     'fltr'
  261. #define kControlEditTextSelectionTag     'sele'                /*  EditTextSelectionRec */
  262. #define kControlEditTextPasswordTag     'pass'                /*  The clear text password text */
  263.  
  264. #define kControlStaticTextProc             288
  265. #define kControlStaticTextStyleTag         'font'                /*  ControlFontStyleRec */
  266. #define kControlStaticTextTextTag         'text'                /*  Copy of text */
  267. #define kControlStaticTextTextHeightTag  'thei'                /*  SInt16 */
  268.  
  269.                                                             /*  Picture control proc IDs  */
  270. #define kControlPictureProc             304
  271. #define kControlPictureNoTrackProc         305                    /*  immediately returns kControlPicturePart */
  272.  
  273. #define kControlIconProc                 320
  274. #define kControlIconNoTrackProc         321                    /*  immediately returns kControlIconPart */
  275. #define kControlIconSuiteProc             322
  276. #define kControlIconSuiteNoTrackProc     323                    /*  immediately returns kControlIconPart */
  277.  
  278. #define kControlIconTransformTag         'trfm'                /*  IconTransformType */
  279. #define kControlIconAlignmentTag         'algn'                /*  IconAlignmentType */
  280.  
  281.                                                             /*  Window Header proc IDs  */
  282. #define kControlWindowHeaderProc         336                    /*  normal header */
  283. #define kControlWindowListViewHeaderProc  337                /*  variant for list views - no bottom line */
  284.  
  285.                                                             /*  List Box proc IDs  */
  286. #define kControlListBoxProc             352
  287. #define kControlListBoxAutoSizeProc     353
  288.  
  289.                                                             /*  Tagged data supported by list box  */
  290. #define kControlListBoxListHandleTag     'lhan'                /*  ListHandle */
  291. #define kControlListBoxKeyFilterTag     'fltr'                /*  ControlKeyFilterUPP */
  292. #define kControlListBoxFontStyleTag     'font'                /*  ControlFontStyleRec */
  293.  
  294. #define kControlListBoxDoubleClickTag     'dblc'                /*  Boolean. Was last click a double-click? */
  295. #define kControlListBoxLDEFTag             'ldef'                /*  SInt16. ID of LDEF to use.  */
  296.  
  297.                                                             /*  Theme Push Button/Check Box/Radio Button proc IDs  */
  298. #define kControlPushButtonProc             368
  299. #define kControlCheckBoxProc             369
  300. #define kControlRadioButtonProc         370
  301. #define kControlPushButLeftIconProc     374                    /*  Standard pushbutton with left-side icon */
  302. #define kControlPushButRightIconProc     375                    /*  Standard pushbutton with right-side icon */
  303.  
  304.                                                             /*  Tagged data supported by standard buttons  */
  305. #define kControlPushButtonDefaultTag     'dflt'                /*  default ring flag */
  306.                                                             /*  Theme Scroll Bar proc IDs  */
  307. #define kControlScrollBarProc             384                    /*  normal scroll bar */
  308. #define kControlScrollBarLiveProc         386                    /*  live scrolling variant */
  309.  
  310.                                                             /*  Theme Popup Button proc IDs  */
  311. #define kControlPopupButtonProc         400
  312. #define kControlPopupFixedWidthVariant     0x01
  313. #define kControlPopupVariableWidthVariant  0x02
  314. #define kControlPopupUseAddResMenuVariant  0x04
  315. #define kControlPopupUseWFontVariant     0x08                /*  kControlUsesOwningWindowsFontVariant */
  316.  
  317. #define kControlPopupButtonMenuHandleTag  'mhan'            /*  MenuHandle */
  318. #define kControlPopupButtonMenuIDTag     'mnid'                /*  SInt16 */
  319.  
  320. #define kControlRadioGroupProc             416
  321. #define popupFixedWidth                 0x01
  322. #define popupVariableWidth                 0x02
  323. #define popupUseAddResMenu                 0x04
  324. #define popupUseWFont                     0x08
  325.  
  326. #define popupTitleBold                     0x0100
  327. #define popupTitleItalic                 0x0200
  328. #define popupTitleUnderline             0x0400
  329. #define popupTitleOutline                 0x0800
  330. #define popupTitleShadow                 0x1000
  331. #define popupTitleCondense                 0x2000
  332. #define popupTitleExtend                 0x4000
  333. #define popupTitleNoStyle                 0x8000
  334.  
  335. #define popupTitleLeftJust                 0x00000000
  336. #define popupTitleCenterJust             0x00000001
  337. #define popupTitleRightJust             0x000000FF
  338.  
  339. #ifdef oldTemp
  340. /*--------------------------cctb • Control Color old Lookup Table----------------------*/
  341.     type 'cctb' {
  342.             unsigned hex longint;                                    /* CCSeed                */
  343.             integer;                                                /* ccReserved            */
  344.             integer = $$Countof(ColorSpec) - 1;                        /* ctSize                */
  345.             wide array ColorSpec {
  346.                     integer        cFrameColor,                        /* partcode                */
  347.                                 cBodyColor,
  348.                                 cTextColor,
  349.                                 cElevatorColor;
  350.                     unsigned integer;                                /* RGB:    red                */
  351.                     unsigned integer;                                /*        green            */
  352.                     unsigned integer;                                /*        blue            */
  353.             };
  354.     };
  355. #else
  356. /*----------------------------cctb • Control Color Lookup Table-------------------------*/
  357.     type 'cctb' {
  358.             unsigned hex longint = 0;                                /* CCSeed                */
  359.             integer = 0;                                            /* ccReserved            */
  360.             integer = $$Countof(ColorSpec) - 1;                        /* ctSize                */
  361.             wide array ColorSpec {
  362.                     integer        cFrameColor,                        /* partcode                */
  363.                                 cBodyColor,
  364.                                 cTextColor,
  365.                                 cElevatorColor,
  366.                                 cFillPatColor,
  367.                                 cArrowsLight,
  368.                                 cArrowsDark,
  369.                                 cThumbLight,
  370.                                 cThumbDark,
  371.                                 cHiliteLight,
  372.                                 cHiliteDark,
  373.                                 cTitleBarLight,
  374.                                 cTitleBarDark,
  375.                                 cTingeLight,
  376.                                 cTingeDark;
  377.                     unsigned integer;                                /* RGB:    red                */
  378.                     unsigned integer;                                /*        green            */
  379.                     unsigned integer;                                /*        blue            */
  380.             };
  381.     };
  382. #endif
  383.  
  384. /*----------------------------CNTL • Control Template-----------------------------------*/
  385. type 'CNTL' {
  386.         rect;                                                    /* Bounds                */
  387.         integer;                                                /* Value                */
  388.         byte            invisible, visible;                     /* visible                */
  389.         fill byte;
  390.         integer;                                                /* Max                    */
  391.         integer;                                                /* Min                    */
  392.         integer         pushButProc,                            /* ProcID                */
  393.                         checkBoxProc,
  394.                         radioButProc,
  395.                         pushButProcUseWFont = 8,
  396.                         checkBoxProcUseWFont,
  397.                         radioButProcUseWFont,
  398.                         scrollBarProc = 16;
  399.         longint;                                                /* RefCon                */
  400.         pstring;                                                /* Title                */
  401. };
  402.  
  403. #define    popupMenuCDEFproc        1008                            /* ProcID 1008 = 16 * 63        */
  404.  
  405.  
  406. /*--------------------------ldes • List Box Description Template------------------------*/
  407. /*    Used in conjunction with the list box control.                                      */
  408.  
  409. type 'ldes'
  410. {
  411.     switch
  412.     {
  413.         case versionZero:
  414.             key integer = 0;    /* version */
  415.  
  416.             integer;                                                /* Rows                    */
  417.             integer;                                                /* Columns                */
  418.             integer;                                                 /* Cell Height            */
  419.             integer;                                                /* Cell Width            */
  420.             byte            noVertScroll, hasVertScroll;            /* Vert Scroll            */
  421.             fill byte;                                                /* Filler Byte            */
  422.             byte            noHorizScroll, hasHorizScroll;            /* Horiz Scroll            */
  423.             fill byte;                                                /* Filler Byte            */
  424.             integer;                                                /* LDEF Res ID            */
  425.             byte            noGrowSpace, hasGrowSpace;                /* HasGrow?                */
  426.             fill byte;
  427.     };
  428. };
  429.  
  430.  
  431. /*-------------------------------tab# • Tab Control Template-----------------------------*/
  432. type 'tab#'
  433. {
  434.     switch
  435.     {
  436.         case versionZero:
  437.             key integer = 0;    /* version */
  438.  
  439.             integer = $$Countof(TabInfo);
  440.             array TabInfo
  441.             {
  442.                 integer;                                            /* Icon Suite ID        */
  443.                 pstring;                                            /* Tab Name                */
  444.                 fill long;                                            /* Reserved                */
  445.                 fill word;                                            /* Reserved                */
  446.             };
  447.     };
  448. };
  449.  
  450.  
  451. #endif /* __CONTROLS_R__ */
  452.  
  453.